package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.dto.OpenApiDTO;
import java.util.List;
import com.ruoyi.system.domain.DefGain;
import com.ruoyi.system.domain.request.CompanyRequest;
import com.ruoyi.system.domain.request.GainRequest;
import com.ruoyi.system.domain.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 成果管理Mapper接口
 * 
 * @author ruoyi
 * @date 2024-10-11
 */
public interface DefGainMapper 
{
    /**
     * 查询成果管理
     * 
     * @param id 成果管理主键
     * @return 成果管理
     */
    public DefGain selectDefGainById(Long id);

    /**
     * 查询成果管理列表
     * 
     * @param defGain 成果管理
     * @return 成果管理集合
     */
    public List<DefGain> selectDefGainList(DefGain defGain);

    /**
     * 新增成果管理
     * 
     * @param defGain 成果管理
     * @return 结果
     */
    public int insertDefGain(DefGain defGain);

    /**
     * 修改成果管理
     * 
     * @param defGain 成果管理
     * @return 结果
     */
    public int updateDefGain(DefGain defGain);

    /**
     * 删除成果管理
     * 
     * @param id 成果管理主键
     * @return 结果
     */
    public int deleteDefGainById(Long id);

    /**
     * 批量删除成果管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteDefGainByIds(Long[] ids);

    List<DefGainListVo> pageList(GainRequest request);

    List<GainCountVo.GainCount> statusCount(GainRequest request);

    List<GainCountVo.GainScore> scoreSum(GainRequest request);

    List<DefCompanyVo> companyCount(Long drillId,String teamType);

    List<GainGaredeVo> gradeCount(Integer drillId);

    List<DefTeamGainVo> teamCount(@Param("drillId") Integer drillId, @Param("teamId") Long teamId);

    List<DefCompanyVo> companyTrack(@Param("request") CompanyRequest request);

    List<DefTeamCount> teamTypeCount(@Param("drillId") Integer drillId);

    List<DefGainAggVO> sortAttack(@Param("drillId") Integer drillId);

    List<DefGainAggVO> sortDefend(@Param("drillId") Integer drillId);

    List<DefGainResultVO> resultShow(@Param("drillId") Integer drillId);
    List<CountVO> unitSort(@Param("drillId") Integer drillId);

    LevelVO resultLevel(@Param("drillId") Integer drillId);

    List<DefGain> gain(@Param("dto") OpenApiDTO dto);
}
